using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyController : MonoBehaviour    //使用官方教程代码，原代码见md文件
{
    Rigidbody2D rigidbody2d;
    // 声明一个2d刚体对象
    public float speed;
    // 设置每次刷新移动距离
    public bool vertical;
    // 设置一个布尔变量来判断是纵向移动还是横向移动
    public float ChangeTime = 3.0f;
    // 设置循环时间
    float Timer;
    // 设置计时器
    int direction = 1;
    // 声明方向变量
    Animator animator;
    bool broken = true;
    // 声明一个 bool 值，用它来控制机器人被齿轮击中后的不同表现
    void Start()
    {
        rigidbody2d = GetComponent<Rigidbody2D>();
        Timer = ChangeTime;
        animator = GetComponent<Animator>();
    }
    void Update()
    {
        if ( !broken )  // 检测到机器人已经被击中，直接返回不再运动
        {
            return;
        }
        Timer = Timer - Time.deltaTime;
        if (Timer <= 0)
        {
            direction = -direction;
            Timer = ChangeTime;
        }
    }
    void FixedUpdate()
    {
        if ( !broken )  // 检测到机器人已经被击中，直接返回不再运动
        {
            return;
        }

        Vector2 position = transform.position;

        if (vertical)
        {
            position.y = position.y + speed*direction*Time.deltaTime;
            // Debug.Log("纵向移动");
            animator.SetFloat("Move X",0);
            animator.SetFloat("Move Y",direction);
        }
        else 
        {
            position.x = position.x + speed*direction*Time.deltaTime;
            // Debug.Log("横向移动");
            animator.SetFloat("Move X",direction);
            animator.SetFloat("Move Y",0);
        }
        rigidbody2d.MovePosition(position);
        // 改变2d刚体的位置
    }
    void OnCollisionEnter2D(Collision2D other)
    {
        // 获取碰撞的游戏对象
        RubyController rubyController = other.gameObject.GetComponent<RubyController>();
        if (rubyController != null)
        {
            // 碰撞后执行玩家扣血
            rubyController.changeHealth(-1);
        }
    }
    public void Fix()
    {
        broken = false;
        // 更改机器人状态为已经修复
        rigidbody2d.simulated = false;
        // 刚体的类方法，为 false 取消刚体物理引擎效果
    }
}
